﻿Imports System.Data
Imports VSModel
Imports Cls_Common

Partial Class Control_StatusActionRule_Create
    Inherits System.Web.UI.UserControl
    Private Shared ReadOnly log As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
    Dim level As String = -1
#Region "Sub and Function "
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            Dim script As ScriptManager = ScriptManager.GetCurrent(Me.Page)
            If Not script Is Nothing AndAlso script.IsInAsyncPostBack Then
                ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "jqueryEnable", "ajaxJquery()", True)
            Else
                Me.Page.ClientScript.RegisterStartupScript(Me.Page.GetType(), "jqueryEnable", String.Concat("Sys.Application.add_load(function(){", "ajaxJquery()", "});"), True)
            End If

            getFunction()

        End If
    End Sub
    Protected Function checkExist() As Boolean
        Using data As New VSEntities
            Dim CurrentStatusId As Integer = CType(txtStatus.Text, Integer)
            Dim ActionId As Integer = CType(txtAction.Text, Integer)

            Dim p = (From q In data.StatusActions Where q.FunctionId = ddlFunction.SelectedValue And q.CurrentStatusId = CurrentStatusId And q.ActionId = ActionId Select q).FirstOrDefault
            If p Is Nothing Then
                Return True
            Else
                Return False
            End If
        End Using
    End Function
   
    Protected Sub getFunction()
        ddlFunction.Items.Clear()
        Using data As New VSEntities
            Dim p As List(Of SysFunction) = (From q In data.SysFunctions Where q.IsStatus = True Order By q.Sort, q.HrefName Ascending Select q).ToList
            RecursiveFillTree(p, 0)
            ddlFunction.Items.Insert(0, New ListItem("--- Chọn ---", "0"))
            ddlFunction.SelectedIndex = -1
            ddlAction.Items.Insert(0, New ListItem("--- Chọn ---", "0"))
            ddlNextStatus.Items.Insert(0, New ListItem("--- Chọn ---", "0"))
            ddlStatus.Items.Insert(0, New ListItem("--- Chọn ---", "0"))
        End Using
    End Sub
    Private Sub RecursiveFillTree(ByVal dtParent As List(Of SysFunction), ByVal _parentID As Integer)
        Using data As New VSEntities
            Dim dv As List(Of SysFunction) = (From q In data.SysFunctions Where q.IsStatus = True Order By q.Sort, q.HrefName Ascending Select q).ToList
            Dim i As Integer
            If dv.Count > 0 Then
                For i = 0 To dv.Count - 1
                    Dim itm As New ListItem(Server.HtmlDecode(dv.Item(i).HrefName.ToString()), dv.Item(i).FunctionId.ToString())
                    ddlFunction.Items.Add(itm)
                    ' RecursiveFillTree(dtParent, Integer.Parse(dv.Item(i).FunctionId.ToString()))
                Next
            End If
        End Using
    End Sub

    Protected Function Save() As Boolean
        Using data As New VSEntities
            Dim p As New VSModel.StatusAction
            Try
                p.CurrentStatusId = txtStatus.Text
                p.FunctionId = ddlFunction.SelectedValue
                p.ActionId = txtAction.Text
                p.NextStatusId = txtNextStatus.Text
                data.StatusActions.AddObject(p)
                data.SaveChanges()
                'Insert_App_Log("Insert  StatusActionRule:" & txtTitle.Text.Trim & "", Function_Name.StatusActionRule, Audit_Type.Create, Request.ServerVariables("REMOTE_ADDR"), Session("UserName"))
                Return True
            Catch ex As Exception
                log4net.Config.XmlConfigurator.Configure()
                log.Error("Error error " & AddTabSpace(1) & Session("Username") & AddTabSpace(1) & "IP:" & GetIPAddress(), ex)
                Return False
            End Try
        End Using
    End Function
    Protected Sub ResetControl()
        ddlStatus.SelectedValue = "0"
        ddlFunction.SelectedValue = "0"
        ddlAction.SelectedValue = "0"
        ddlNextStatus.SelectedValue = "0"
    End Sub
#End Region
#Region "Event for control "
    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
        If checkExist() Then
            If Save() Then
                Excute_Javascript("Alertbox('Cập nhật dữ liệu thành công.');window.location ='../../Page/StatusActionRule/List.aspx?FunctionId=" + ddlFunction.SelectedValue + "';", Me.Page, True)
                'Excute_Javascript("Alertbox('Cập nhật dữ liệu thành công.');", Me.Page, True)
            Else
                Excute_Javascript("Alertbox('Cập nhật thất bại.');", Me.Page, True)
            End If
        Else
            Excute_Javascript("Alertbox('Đã tồn tại này trên chức năng " + ddlFunction.SelectedItem.Text + ".');", Me.Page, True)
        End If
    End Sub
  
    Protected Sub btnReset_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnReset.Click
        Response.Redirect("List.aspx?FunctionId=" & ddlFunction.SelectedValue)
    End Sub
#End Region
End Class
